package com.example.excelapache_poi.apache_poi操作excel;
import org.apache.poi.hssf.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;

/**
 * Created by IntelliJ IDEA2022.3.2
 * @Author: Tenghw
 * @Date: 2023/07/02  13:32
 * @Description: Excel表单元格控制 —— 设置格式
 */
public class Demo2 {
    public static void main(String[] args) throws IOException {
        // 1.文件路径
        String filePath = "E:\\exceldemo\\Demo2.xls";
        // 2.创建Excel文件（Workbook）
        HSSFWorkbook workbook = new HSSFWorkbook();
        // 3.创建工作表（Sheet）
        HSSFSheet sheet = workbook.createSheet("Sheet2");
        // 4.创建行（Row），从0开始
        HSSFRow row = sheet.createRow(0);
        // 5.创建行的单元格（Cell，即列），也是从0开始
        HSSFCell cell = row.createCell(0);

        // 5.1.设置列0单元格内容;
        cell.setCellValue(new Date());
        // 5.1.1.设置日期格式（使用Excel内嵌的格式）
        HSSFCellStyle style = workbook.createCellStyle();
        style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
        cell.setCellStyle(style);

        // 5.2.设置列1单元格内容
        cell=row.createCell(1);
        cell.setCellValue(12.345678);
        // 5.2.1.设置保留2位小数（使用Excel内嵌的格式）
        style = workbook.createCellStyle();
        style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
        cell.setCellStyle(style);

        // 5.3.设置列2单元格内容
        cell=row.createCell(2);
        cell.setCellValue(666.6666);
        // 5.3.1.设置货币格式（使用自定义的格式）
        style = workbook.createCellStyle();
        style.setDataFormat(workbook.createDataFormat().getFormat("￥#,##0"));
        cell.setCellStyle(style);

        // 5.4.设置列3单元格内容
        cell=row.createCell(3);
        cell.setCellValue(0.123456789);
        // 5.4.1.设置百分比格式（使用自定义的格式）
        style = workbook.createCellStyle();
        style.setDataFormat(workbook.createDataFormat().getFormat("0.00%"));
        cell.setCellStyle(style);

        // 5.5.设置列4单元格内容
        cell=row.createCell(4);
        cell.setCellValue(12345);
        // 5.5.1.设置中文大写格式（使用自定义的格式）
        style = workbook.createCellStyle();
        style.setDataFormat(workbook.createDataFormat().getFormat("[DbNum2][$-804]0"));
        cell.setCellStyle(style);

        // 5.6.设置列5单元格内容
        cell=row.createCell(5);
        cell.setCellValue(12345);
        // 5.6.1.设置科学计数法格式（使用自定义的格式）
        style = workbook.createCellStyle();
        style.setDataFormat(workbook.createDataFormat().getFormat("0.00E+00"));
        cell.setCellStyle(style);

        // 6.文件输出流
        FileOutputStream out = new FileOutputStream(filePath);
        // 保存到Excel文件中
        workbook.write(out);

        // 7.关闭流
        out.flush();
        out.close();
        workbook.close();
        System.out.println("数据写出到ExcelOK！");
    }
}
